package cn.edu.gzhu.workOrderManagement.pojo.entity;

import cn.edu.gzhu.workOrderManagement.enumeration.WorkOrderProcessingStatusEnum;
import cn.edu.gzhu.workOrderManagement.typeHandles.ListTypeHandle;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 工单的实体类
 * @author chen xi
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class WorkOrder implements Serializable {
    /**
     * 主键id，不对外展示
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 唯一表示符，对外展示
     */
    private String uuid;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;
    /**
     * 工单请求者，用户输入
     */
    private String requestUser;

    /**
     * 工单请求者的身份证，用户输入
     */
    private String requestIdCard;

    /**
     * 逻辑卡号，用户输入
     */
    private String logicalCardNumber;

    /**
     * 案件号，用户输入
     */
    private String caseNumber;

    /**
     *工单类型，使用WorkOrderTypeConstant
     */
    private String type;

    /**
     * 工单类别，用户输入
     */
    private String category;

    /**
     * 工单内容
     */
    private String content;

    /**
     * 跟进状态,使用WorkOrderFollowStatus
     */
    private String followStatus;

    /**
     * 银行处理建议,用户输入
     */
    private String bankProcessingAdvice;

    /**
     * 工单预警级别，使用WorkOrderAlertLevelConstant
     */
    private Integer alertLevel;

    /**
     * 是否为监管投诉，用户输入
     */
    private Boolean isRegulatoryComplaint;

    /**
     * 地区，用户输入
     */
    private String region;

    /**
     * 经办人,用户输入
     */
    private String handler;

    /**
     * 经理，用户输入
     */
    private String manager;

    /**
     * 组别,用户输入
     */
    private String teamCategory;
    /**
     * 组员，用户输入
     */
    private String teamMember;

    /**
     * 工单状态
     */
    private WorkOrderProcessingStatusEnum processingStatus;

    /**
     * 工单实际结束时间
     */
    private LocalDateTime endTime;

    /**
     * 内部核实情况,用户输入
     */
    private String processedDetails;

    /**
     * 委案批次,用户输入
     */
    private String caseBatch;

    /**
     * 手别,用户输入
     */
    private String manualType;

    /**
     * 处理者的用户名
     */
    private String targetUser;

    /**
     * 工单标题
     */
    private String title;

    /**
     * 处理上传的附件链接
     */
    @TableField(typeHandler = ListTypeHandle.class)
    private List<String> annex;

    /**
     * 敏感字眼
     */
    private Boolean isSensitive;

    /**
     * 目标处理机构
     */
    private String targetOrganization;

    /**
     * 工单预期完成时间
     */
    private LocalDateTime expectedEndTime;

    /**
     * 上级审核意见
     */
    private String reviewComment;

    /**
     *工单重复次数
     */
    private Integer repeatTime;

    /**
     * 材料工单的材料链接
     */
    @TableField(typeHandler = ListTypeHandle.class)
    private List<String> material;

    /**
     * 是否被删除
     */
    private Boolean is_deleted;
}
